﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Data_Access_Layer;

namespace Moje_Finanse
{
    public partial class DodajWydatek : Form
    {
        private Main mainForm;
        private DateTime selectedDate;
        
        public DodajWydatek(Main mainForm, DateTime selectedDate)
        {
            this.mainForm = mainForm;
            this.selectedDate = selectedDate;
            InitializeComponent();
        }

        private void DodajWydatek_Load(object sender, EventArgs e)
        {
            // Przy otwieraniu okna ładujemy kategorie do combo-boxa
            dateTimePicker.Value = selectedDate;
            comboBoxKategoria.DataSource = DbManager.Instance.GetCategories();
            comboBoxKategoria.ValueMember = "Id";
            comboBoxKategoria.DisplayMember = "Category";
        }

        private void buttonAnuluj_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void buttonDodaj_Click(object sender, EventArgs e)
        {
            try
            {
                // Automatyczna zmiana znaku
                decimal kwota = decimal.Parse(textKwota.Text);
                kwota = rButtonWydatek.Checked ? decimal.Negate(kwota) : kwota;

                // Dodatkowy atrybut transakcji (stały czy nie)
                bool constant = checkBox1.Checked ? true : false;

                Transactions transaction = new Transactions
                {
                    Id = System.Guid.NewGuid(),
                    Description = textTytul.Text.Trim(),
                    Category = (System.Guid)comboBoxKategoria.SelectedValue,
                    Date = dateTimePicker.Value,
                    Value = kwota,
                    Const = constant
                };

                DbManager.Instance.AddTrasaction(transaction);
            }
            catch (FormatException er)
            {
                MessageBox.Show("Podaj poprawną wartość kwoty!", er.Message);
            }
            catch (EntityCommandExecutionException en)
            {
                throw en;
            }
            catch (NullReferenceException)
            {
                MessageBox.Show("A kategoria gdzie ?!");
            }
            this.Close();
        }

        // Zdarzenie, które po dodaniu automatycznie odświeża po dacie dodania
        private void DodajWydatek_FormClosed(object sender, FormClosedEventArgs e)
        {
            this.mainForm.refreshGridView(dateTimePicker.Value);
        }
    }
}
